const state = {
  answerList: [],
  paperId: null,
};

const mutations = {
  /**
   * 提交试卷后，清空state
   */
  CLEAR_ANSWERS: (state) => {
    state.answerList = [];
    state.paperId = null;
  },
  /**
   * 设置提交时得是哪个试卷
   * @param {*} state
   * @param {*} paper
   */
  SET_PAPER_ID: (state, paper) => {
    state.paperId = {
      doExamEndTime: paper.doExamEndTime,
      paperAnswerId: paper.paperAnswerId,
      paperId: paper.paperId,
    };
  },
  /**
   * TODO 待定：这里要存数据，那么数据要在这里请求来获取。
   * @param {*} state
   * @param {*} array  所有题目数组
   * @returns
   */
  SET_ANSWERS: (state, array) => {
    // state.answers.push(...array);
    // 组装数据
    for (let i = 0; i < array.length; i++) {
      const element = array[i];
      state.answerList.push({
        id: element.questionId,
        computed: false,
        item: element.questionItems,
        title: element.questionTitle,
        type: element.questionType,
      });
    }
  },

  /**
   *
   * @param {*} state
   * @param {*} option  用户选择得题目选项:包含id 选择得是什么
   */
  CHANGE_ANSWERS_ITEM: (state, option) => {
    console.log(option);
    // 要做一下判断
    /* 
    1：这个题目是否存在，是，则修改，否则追加
    2：答题卡这里还是要用到组装后得数据，怎么办
    3：多选题，我选了一次一个答案，我取消了怎么办？可以根据computedd来，其实    
    4: 第一次是点了，但是我点取消了得时候，TM得  还是元数据
    */
    if (option.computed) {
      state.answerList.push({
        questionId: option.id,
        answer: option.answer,
      });
    }
  },
};

const actions = {
  // 提交得是哪张试卷得id
  setPaperId({ commit }, val) {
    commit("SET_PAPER_ID", val);
  },
  /**
   *
   * @param {*} val 数组
   */
  setAnswers({ commit }, val) {
    commit("SET_ANSWERS", val);
  },
  // 用户做题
  changeAnswerItem({ commit }, option) {
    commit("CHANGE_ANSWERS_ITEM", option);
  },
  // 用户提交

  clearAnswers({ commit }) {
    commit("CLEAR_ANSWERS");
  },
};

export default {
  //   namespaced: true,
  state,
  mutations,
  actions,
};
